/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionform;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import model.Candidat;
import model.Candidature;
import org.restlet.ext.xml.DomRepresentation;
import org.restlet.representation.Representation;
import org.restlet.resource.ClientResource;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import utils.DateUtils;
import utils.DateUtilsException;

/**
 *
 * @author Paul
 */
public class GestionCandidatures extends GestionInfos {

    //private final String BASE_URL = "http://212.198.164.253:1234/XmlProjet/candidaturesDetails";
    private final String BASE_URL = "http://localhost:8080/XmlProjet/candidaturesDetails";
    
    private String nomFormation;
    private Candidat candidat;

    public String getNomFormation() {
        return nomFormation;
    }

    private void setNomFormation(String nomFormation) {
        this.nomFormation = nomFormation;
    }

    public GestionCandidatures(Candidat c) {
        this.candidat = c;
    }

    public GestionCandidatures() {
    }

    public List<Candidature> getListeCandidatures() throws IOException, DateUtilsException {
        List<Candidature> listeCandidature = getCandidatures();
        if (!listeCandidature.isEmpty()) {
            return listeCandidature;
        } else {
            setErreur("message", "Vous ne possèdez aucune candidature");
        }
        return listeCandidature;
    }

    public List<Candidature> getAllCandidatures(Candidat c) throws IOException, DateUtilsException {
        ClientResource resource = new ClientResource(BASE_URL);
        Representation reponse = resource.get();
        DomRepresentation newDom = new DomRepresentation(reponse);
        Document newDoc = newDom.getDocument();
        List<Candidature> listeCandidature = new ArrayList<Candidature>();
        //On crée une List contenant tous les noeuds "utilisateurs" de l'Element racine
        NodeList listeUtilisateurs = newDoc.getChildNodes();
        //On crée un Iterator sur notre liste
        for (int i = 0; i < listeUtilisateurs.getLength(); i++) {
            NodeList utilisateur = newDoc.getElementsByTagName("candidature");
            for (int j = 0; j < utilisateur.getLength(); j++) {
                Element elt = (Element) utilisateur.item(j);
                String idCt = elt.getAttribute("idCandidat");
                String idFormation = elt.getAttribute("idFormation");
                setNomFormation(elt.getAttribute("nomFormation"));
                String etatCandidature = elt.getAttribute("etatCandidature");
                String dateCandidature = elt.getAttribute("dateCandidature");
                if (Integer.parseInt(idCt) == c.getIdCandidat()) {
                    String nomCandidat = elt.getAttribute("nomCandidat");
                    String prenomCandidat = elt.getAttribute("prenomCandidat");
                    String telephoneCandidat = elt.getAttribute("telephoneCandidat");
                    String emailCandidat = elt.getAttribute("emailCandidat");
                    String adresseCandidat = elt.getAttribute("adresseCandidat");
                    c.setNom(nomCandidat);
                    c.setPrenom(prenomCandidat);
                    c.setTelephone(telephoneCandidat);
                    c.setEmail(emailCandidat);
                    c.setAdresse(adresseCandidat);
                    Candidature ct = new Candidature(Integer.parseInt(idFormation), Integer.parseInt(idCt), dateCandidature, etatCandidature);
                    listeCandidature.add(ct);
                }
            }
        }
        return listeCandidature;
    }

    public List<Candidature> getCandidatures() throws IOException, DateUtilsException {
        ClientResource resource = new ClientResource(BASE_URL);
        Representation reponse = resource.get();
        DomRepresentation newDom = new DomRepresentation(reponse);
        Document newDoc = newDom.getDocument();
        List<Candidature> listeCandidature = new ArrayList<Candidature>();
        //On crée une List contenant tous les noeuds "utilisateurs" de l'Element racine
        NodeList listeUtilisateurs = newDoc.getChildNodes();
        //On crée un Iterator sur notre liste
        for (int i = 0; i < listeUtilisateurs.getLength(); i++) {
            NodeList utilisateur = newDoc.getElementsByTagName("candidature");
            for (int j = 0; j < utilisateur.getLength(); j++) {
                Element elt = (Element) utilisateur.item(j);
                String idCt = elt.getAttribute("idCandidat");
                String idFormation = elt.getAttribute("idFormation");
                setNomFormation(elt.getAttribute("nomFormation"));
                String etatCandidature = elt.getAttribute("etatCandidature");
                String dateCandidature = elt.getAttribute("dateCandidature");
                if (Integer.parseInt(idCt) == candidat.getIdCandidat()) {
                    Candidature ct = new Candidature(Integer.parseInt(idFormation), Integer.parseInt(idCt), dateCandidature, etatCandidature);
                    listeCandidature.add(ct);
                }
            }
        }
        return listeCandidature;
    }

    public Candidat getInfosCandidat(Candidat ct) throws IOException {
        ClientResource resource = new ClientResource(BASE_URL);
        Representation reponse = resource.get();
        DomRepresentation newDom = new DomRepresentation(reponse);
        Document newDoc = newDom.getDocument();
        //On crée une List contenant tous les noeuds "utilisateurs" de l'Element racine
        NodeList listeUtilisateurs = newDoc.getChildNodes();
        Candidat c = null;
        //On crée un Iterator sur notre liste
        for (int i = 0; i < listeUtilisateurs.getLength(); i++) {
            NodeList utilisateur = newDoc.getElementsByTagName("candidature");
            for (int j = 0; j < utilisateur.getLength(); j++) {
                Element elt = (Element) utilisateur.item(j);
                String idCt = elt.getAttribute("idCandidat");
                String nomCandidat = elt.getAttribute("nomCandidat");
                String prenomCandidat = elt.getAttribute("prenomCandidat");
                String telephoneCandidat = elt.getAttribute("telephoneCandidat");
                String emailCandidat = elt.getAttribute("emailCandidat");
                String adresseCandidat = elt.getAttribute("adresseCandidat");
                if (ct.getIdCandidat() == Integer.parseInt(idCt)) {
                    c = new Candidat();
                    c.setIdUtilisateur(ct.getIdUtilisateur());
                    c.setIdCandidat(Integer.parseInt(idCt));
                    c.setNom(nomCandidat);
                    c.setPrenom(prenomCandidat);
                    c.setTelephone(telephoneCandidat);
                    c.setEmail(emailCandidat);
                    c.setAdresse(adresseCandidat);
                }
            }
        }
        return c;
    }
}
